home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Magazine / C_Tutorial / Part-11 / req1 / menu.c < prev    next >
C/C++ Source or Header  |  1998-03-02  |  2KB  |  84 lines

  1. #include "menu.h"
  2. #include "visual.h"
  3.  
  4. #include<libraries/gadtools.h>
  5.  
  6. #include<stdio.h>
  7.  
  8. #include<clib/gadtools_protos.h>
  9. #include<clib/intuition_protos.h>
  10.  
  11. /* Global record of our menu strip */
  12. static struct Menu* menu = NULL;
  13.  
  14. /* Unset menu check mark */
  15. void uncheckToolBar(struct Window* win)
  16. {
  17.     struct MenuItem* item;
  18.     /* First, remove menu strip from window */
  19.     ClearMenuStrip(win);
  20.     /* 2,1 is Tool Bar item (see below) */
  21.     item = ItemAddress(menu, FULLMENUNUM(2,1,0));
  22.     /* Unset CHECKED flag */
  23.     item->Flags &= ~CHECKED;
  24.     /* Reattach menu strip to window */
  25.     ResetMenuStrip(win,menu);
  26. }
  27.  
  28. /* Create the menu strip, using GadTools menu functions */
  29. int createMenuStrip()
  30. {
  31.     /* The description of our menus */
  32.     struct NewMenu mymenu[] =
  33.     {
  34.         { NM_TITLE, "Project",            0,        0, 0, 0,},
  35.         {  NM_ITEM,        "Load",                "L",    0, 0, 0,},
  36.         {  NM_ITEM,        "Save",                "S",    0, 0, 0,},
  37.         {  NM_ITEM,        NM_BARLABEL,    0,        0, 0, 0,},
  38.         {  NM_ITEM,        "New",                "W",    0, 0, 0,},
  39.         {  NM_ITEM,        NM_BARLABEL,    0,        0, 0, 0,},
  40.         {  NM_ITEM,        "Quit",                "Q",    0, 0, 0,},
  41.         { NM_TITLE, "Pen",                    0,        0, 0, 0,},
  42.         {  NM_ITEM,        "Next",                "N",    0, 0, 0,},
  43.         {  NM_ITEM,        "Prev",                "P",    0, 0, 0,},
  44.         {  NM_ITEM,        NM_BARLABEL,    0,        0, 0, 0,},
  45.         {  NM_ITEM,        "Reset",            "R",    0, 0, 0,},
  46.         { NM_TITLE, "Tools",                0,        0, 0, 0,},
  47.         {  NM_ITEM,        "Screen Bar",    "C",    CHECKIT | MENUTOGGLE | CHECKED, 0, 0,},
  48.         /* Next item is index (2,1,0), see uncheckToolBar() above */
  49.         {  NM_ITEM,        "Tool Bar",        "T",    CHECKIT | MENUTOGGLE | CHECKED, 0, 0,},
  50.         {  NM_ITEM,        NM_BARLABEL,    0,        0, 0, 0,},
  51.         {  NM_ITEM,        "Fractal",        "F",    0, 0, 0,},
  52.         {   NM_END, NULL,                        0,        0, 0, 0,},
  53.     };
  54.     if (menu = CreateMenus(mymenu, TAG_END))
  55.     {
  56.         APTR vinfo = getVisual();
  57.         if (LayoutMenus(menu, vinfo, TAG_END))
  58.             /* Succeeded */
  59.             return TRUE;
  60.         else
  61.             printf("Error: could not layout menus\n");
  62.     }
  63.     else
  64.         printf("Error: could not create menu strip\n");
  65.     /* Failed */
  66.     return FALSE;
  67. }
  68.  
  69. void freeMenuStrip()
  70. {
  71.     if(menu)
  72.     {
  73.         FreeMenus(menu);
  74.         /* Set to NULL to indicate that it's been freed */
  75.         menu = NULL;
  76.     }
  77. }
  78.  
  79. /* Give access to the private menu */
  80. struct Menu* getMenuStrip()
  81. {
  82.     return menu;
  83. }
  84.